/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dao;

import static Dao.Conexao.getConnection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import model.entity.Veiculo;

/**
 *
 * @author helton
 */
public class VeiculoDao extends Conexao {

    public static Veiculo insert(Veiculo veiculo) {

        try {
            PreparedStatement pstmt = getConnection().prepareStatement(
                    "Insert Into veiculo (placa,ano_fab,ano_modelo,cor,idmarca,idmodelo,cpf)"
                    + "Values(?,?,?,?,?,?,?)");
            pstmt.setObject(1, veiculo.getPlaca());
            pstmt.setObject(2, veiculo.getAnoDeFabricacao());
            pstmt.setObject(3, veiculo.getAnoDeModelo());
            pstmt.setObject(4, veiculo.getCor());
            pstmt.setObject(5, veiculo.getIdmarca());
            pstmt.setObject(6, veiculo.getIdmodelo());
            pstmt.setObject(7, veiculo.getProprietario());
            pstmt.executeUpdate();
            //
            pstmt.close();
        } catch (Exception e) {
            System.out.println("Erro " + e);
        }
        return veiculo;
    }

    public static Veiculo update(Veiculo veiculo) {
        try {
            PreparedStatement pstmt = getConnection().prepareStatement(
                    "Update veiculo Set ano_fab = ?, ano_modelo = ?, "
                    + "cor = ?,idmarca = ?,idmodelo = ?,cpf = ?"
                    + "Where placa = ?");
            pstmt.setObject(1, veiculo.getAnoDeFabricacao());
            pstmt.setObject(2, veiculo.getAnoDeModelo());
            pstmt.setObject(3, veiculo.getCor());
            pstmt.setObject(4, veiculo.getIdmarca());
            pstmt.setObject(5, veiculo.getIdmodelo());
            pstmt.setObject(6, veiculo.getProprietario());
            pstmt.setObject(7, veiculo.getPlaca());
            pstmt.executeUpdate();
            //
            pstmt.close();
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
        return veiculo;
    }

    public static boolean remove(Veiculo veiculo) {
        try {
            PreparedStatement pstmt = getConnection().prepareStatement(
                    "Delete from veiculo Where placa =?");
            pstmt.setObject(1, veiculo.getPlaca());
            pstmt.executeUpdate();
            //
            pstmt.close();
            return true;
        } catch (Exception e) {
            System.out.println("Erro: "+e);
            return false;
        }
    }

    public static Veiculo find(String placa) {
        Veiculo veiculo = new Veiculo();
        try {
            PreparedStatement pstmt = getConnection().prepareStatement(
                    "Select * from veiculo Where placa =?");
            pstmt.setObject(1, placa);
            ResultSet rs = pstmt.executeQuery();
            if (rs.next()) {
                veiculo = new Veiculo();
                veiculo.setPlaca(rs.getString("placa"));
                veiculo.setAnoDeFabricacao(rs.getString("ano_fab"));
                veiculo.setAnoDeModelo(rs.getString("ano_modelo"));
                veiculo.setProprietario(rs.getString("cpf"));
            }
            pstmt.executeUpdate();
            //
            pstmt.close();
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
        return veiculo;
    }

    public static List<Veiculo> getAll() {
        List<Veiculo> listVeiculo = new ArrayList<Veiculo>();
        Veiculo veiculo = null;
        try {
            PreparedStatement pstmt = getConnection().prepareStatement(
                    "select veiculo.placa,veiculo.ano_fab,veiculo.ano_modelo,veiculo.cor,"
                    + "marca.descmarca, modelo.descmodelo,veiculo.cpf from veiculo,marca,"
                    + "modelo where veiculo.idmarca = marca.idmarca and veiculo.idmodelo = modelo.idmodelo");
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                veiculo = new Veiculo();
                veiculo.setPlaca(rs.getString("placa"));
                veiculo.setAnoDeFabricacao(rs.getString("ano_fab"));
                veiculo.setAnoDeModelo(rs.getString("ano_modelo"));
                veiculo.setCor(rs.getString("cor"));
                veiculo.setMarca(rs.getString("descmarca"));
                veiculo.setModelo(rs.getString("descmodelo"));
                veiculo.setProprietario(rs.getString("cpf"));
                listVeiculo.add(veiculo);
            }
            //pstmt.executeUpdate();
            //
            pstmt.close();
        } catch (Exception e) {
            System.err.println("Na classe VeiculoDao ocooreu o Erro " + e);
        }
        return listVeiculo;
    }
}
